查看原文
其他

小程序云开发数据库核心能力解析及最佳实践

王国洗 邓坤力 腾讯云云开发CloudBase 2021-05-15

前言

随着用户量和用户需求的不断增加,云开发的迭代速度也越来越快。作为云开发的基础能力之一,云开发数据库也推出了不少新功能,本文就盘点了近期云开发数据库的新功能,快来看看你都用上了没!


基础能力概览

云开发数据库主要提供的是 JSON 文档型数据库,对于前端开发者十分友好,开发者可以借此轻松地完成数据的修改。此外,在数据库基础之上,云开发还提供了丰富的数据类型和多个平台的 SDK,让开发者可以在各个平台完成自己的业务开发。不仅如此,云开发数据库还提供数据库的安全规则控制,让开发者得以实现更细粒度的权限控制。

对云开发概念不熟悉的同学可以扫码查看产品文档:

除了上面提到的基础能力以外,云开发数据库还有很多特色能力,可以帮助你更好的完成自己的业务开发。下文就来带你一探究竟。

自定义告警

为了辅助业务监控服务质量,云开发为数据库提供了自定义告警能力,开发者可以借助监控能力,来完成业务质量的监控、问题的快速触达,将问题“扼杀”在摇篮之中,增强监控服务的可用性。

权限管理

脱离了安全,业务就没有任何保障可言。在数据库权限设置方面,云开发提供了两种设置:第一种是初期提供的四种简易基础权限设置,第二种是灵活的、可自定义的权限控制,即数据库安全规则。每个集合可以拥有一种权限配置,权限配置的规则是作用在集合的每个记录上的。

通过不同粒度的权限控制方式,开发者可以十分简单地使用各种权限控制能力。不仅如此,有了权限控制能力,开发者可以在前端直接操作云开发数据库,有效地提升研发效率。

导入导出管理

针对不同的业务,云开发提供了数据导入、数据导出、数据回档功能。
针对需要从传统业务迁移至云开发上的开发者,可以选用云开发提供的数据导入能力,通过将数据转换成 JSON 或 CSV 格式的方式,完成迁移。类似的,如果业务需要对数据进行离线统计分析的时候,就可以借助数据导出功能,用以本地的数据分析。
除此之外,从安全的角度考虑,我们面向开发者开放了数据回档的功能,只需简单的几下点击,就可以实现数据的快速回档,告别删库跑路。(点此详细了解

索引管理

数据库索引可以提升数据库查询的性能,云开发也提供了相应的索引管理功能,帮助开发者方便快捷地完成索引的创建,优化数据库查询的性能。目前云开发数据库索引支持键值索引和地理位置索引,后续将支持更多索引方式。

如何创建高效的数据库索引?

最佳实践1:每个生产环境查询都应有索引支持

使用数据库时,首先需要注意的是放到线上生产环境的每一条查询,都应该配有索引支持,只有有索引支持才能尽可能规避数据量和请求量上涨带来的慢查询风险。

最佳实践 2:尽可能使用组合索引

如果我们的查询条件包含多个字段,那么为这些字段创建一个组合索引后的查询效率是比只使用单字段索引要高很多的,如下图的case:

最佳实践 3:组合索引字段顺序策略

要注意组合索引中字段的顺序。如下图中的示例,如有包含两个查询字段、一个排序字段的查询语句,在创建组合索引时如何安排字段顺序能使查询效率最高?最优的顺序为b、c、a,原因是在创建组合索引时,应遵循“等于>排序>范围”这一字段顺序优先级原则。

最佳实践4:注意组合索引升降

要注意组合索引的升降序,其中升降序也并不是可以随意指定的,特定的升降序组合只可以满足特定的排序查询。

最佳实践 5:利用覆盖索引高效查询

覆盖索引查询是当查询条件查询要返回的所有字段都在索引中的情况,当命中覆盖查询的时候,查询不再需要去读取数据,可以直接从索引中取得结果,从而进一步提高查询效率。

最佳实践 6:数组查询也要建索引

数组也可以使用索引,像下图中的示例,a 字段是个数字数组,b 字段是个对象嵌套数组,它们其实都可以利用到索引,像 a 字段我们可以直接建个索引,如果需要查 b 数组里面的 x 字段,那可以建个 b.x 的字段索引。

最佳实践 7:去除多余索引

要去除多余的索引。索引的多余与否如何定义?除了未应用、过时的索引外,重复前缀相反升降序的索引也属于多余的索引,去除后可提升查询效率。


最佳实践 8:大数据量下避免使用低区分度操作符

在大数据量下应避免使用低区分度的操作符,由于取反的操作符区分度通常都很低,因此很难高效的使用索引,而只应该在数据量的时候使用。


结语
希望上文中的能力介绍和实践建议可以帮助大家更好地使用云开发数据库。如果你对上文的实践攻略还存有疑惑,欢迎在下方评论区留言或在  进行提问。
此外,微信开发者工具即将推出一个自动分析数据库查询语句、并自动给出索引建议的能力,这项能力可以让大家在偏离数据库索引最佳实践时给出提示和警告,从而让小程序的数据库查询都尽可能有正确、完整、高效的索引保障。
作者:王国洗,腾讯高级后台开发工程师邓坤力,腾讯高级前端开发工程师
*点击文末阅读原文进入云开发社区官网,获取更多文档、教程信息。


 更多精彩
点击下方图片即可了解
新能力丨报告,邮箱登录已支持!




由于公众号推送规则更改,请多多分享点赞“在看”,以及时获取云开发Cloudbase的最新动态。

      点击在看让更多人发现精彩

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存